home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-08-10 | 12.9 KB | 394 lines | [TEXT/MPS ] |
- (*
- File: Power.mod
-
- Contains: Power (PowerBooks and Duos) Manager Interfaces.
-
- Version: Technology: System 7.5
- Package: Universal Interfaces 2.0 in “MPW Latest” on ETO #17
-
- Copyright: © 1984-1995 by Apple Computer, Inc.
- All rights reserved.
-
- Bugs?: If you find a problem with this file, use the Apple Bug Reporter
- stack. Include the file and version information (from above)
- in the problem description and send to:
- Internet: apple.bugs.applelink.apple.com
- AppleLink: APPLE.BUGS
-
- *)
-
- (*$TAGS-*)
- (*$CALLING PASCAL*)
- MODULE Power;
-
- IMPORT SYSTEM, Types;
-
- (* $PUSH*)
- (* $ALIGN MAC68K*)
- (* $LibExport+*)
-
- CONST
- (* Bit positions for Power.ModemByte *)
- modemOnBit* = 0;
- ringWakeUpBit* = 2;
- modemInstalledBit* = 3;
- ringDetectBit* = 4;
- modemOnHookBit* = 5;
- (* masks for Power.ModemByte *)
- modemOnMask* = $01;
- ringWakeUpMask* = $04;
- modemInstalledMask* = $08;
- ringDetectMask* = $10;
- modemOnHookMask* = $20;
- (* bit positions for Power.BatteryByte *)
- chargerConnBit* = 0;
- hiChargeBit* = 1;
- chargeOverFlowBit* = 2;
- batteryDeadBit* = 3;
- batteryLowBit* = 4;
- connChangedBit* = 5;
- (* masks for Power.BatteryByte *)
- chargerConnMask* = $01;
- hiChargeMask* = $02;
- chargeOverFlowMask* = $04;
- batteryDeadMask* = $08;
- batteryLowMask* = $10;
- connChangedMask* = $20;
-
- (* commands to Power.SleepQRec sleepQProc *)
- sleepRequest* = 1;
- sleepDemand* = 2;
- sleepWakeUp* = 3;
- sleepRevoke* = 4;
- sleepUnlock* = 4;
- sleepDeny* = 5;
- sleepNow* = 6;
- dozeDemand* = 7;
- dozeWakeUp* = 8;
- dozeRequest* = 9;
- (* Power.SleepQRec.sleepQFlags *)
- noCalls* = 1;
- noRequest* = 2;
- slpQType* = 16;
- sleepQType* = 16;
-
- (* bits in bitfield returned by PMFeatures *)
- hasWakeupTimer* = 0; (* 1=wakeup timer is supported *)
- hasSharedModemPort* = 1; (* 1=modem port shared by SCC and internal modem *)
- hasProcessorCycling* = 2; (* 1=processor cycling is supported *)
- mustProcessorCycle* = 3; (* 1=processor cycling should not be turned off *)
- hasReducedSpeed* = 4; (* 1=processor can be started up at reduced speed *)
- dynamicSpeedChange* = 5; (* 1=processor speed can be switched dynamically *)
- hasSCSIDiskMode* = 6; (* 1=SCSI Disk Mode is supported *)
- canGetBatteryTime* = 7; (* 1=battery time can be calculated *)
- canWakeupOnRing* = 8; (* 1=can wakeup when the modem detects a ring *)
- hasDimmingSupport* = 9; (* 1=has dimming support built in *)
- hasStartupTimer* = 10; (* 1=startup timer is supported *)
-
- (* bits in bitfield returned by GetIntModemInfo and set by SetIntModemState *)
- hasInternalModem* = 0; (* 1=internal modem installed *)
- intModemRingDetect* = 1; (* 1=internal modem has detected a ring *)
- intModemOffHook* = 2; (* 1=internal modem is off hook *)
- intModemRingWakeEnb* = 3; (* 1=wakeup on ring is enabled *)
- extModemSelected* = 4; (* 1=external modem selected *)
- modemSetBit* = 15; (* 1=set bit, 0=clear bit (SetIntModemState) *)
-
- (* bits in BatteryInfo.flags *)
- (* ("chargerConnected" doesn't mean the charger is plugged in) *)
- batteryInstalled* = 7; (* 1=battery is currently connected *)
- batteryCharging* = 6; (* 1=battery is being charged *)
- chargerConnected* = 5; (* 1=charger is connected to the PowerBook *)
-
- HDPwrQType* = 'HD'; (* hard disk spindown queue element type *)
- PMgrStateQType* = 'PM';
-
-
- TYPE
- BatteryInfo* = (*ΔΔPACKEDΔΔ*) RECORD
- flags*: Types.UInt8; (* misc flags (see below) *)
- warningLevel*: Types.UInt8; (* scaled warning level (0-255) *)
- reserved*: Types.UInt8; (* reserved for internal use *)
- batteryLevel*: Types.UInt8; (* scaled battery level (0-255) *)
- END;
-
- ModemByte* = Types.SInt8;
-
- BatteryByte* = Types.SInt8;
-
- PMResultCode* = LONGINT;
-
- SleepQRecPtr* = POINTER TO SleepQRec;
-
- (*
- SleepQProcPtr uses register based parameters on the 68k and cannot
- be written in or called from a high-level language without the help of
- mixed mode or assembly glue.
-
- In*:
- => message D0.L
- => qRecPtr A0.L
- Out*:
- <= return value D0.L
- *)
- SleepQProcPtr* = Types.Register68kProcPtr; (* register PROCEDURE SleepQ*(message: LONGINT; qRecPtr: SleepQRecPtr): LONGINT; *)
- SleepQUPP* = Types.UniversalProcPtr;
-
- SleepQPtr* = POINTER TO SleepQRec;
- SleepQRec* = RECORD
- sleepQLink*: SleepQPtr(*ΔΔ POINTER TO SleepQRec*); (* pointer to next queue element *)
- sleepQType*: INTEGER; (* queue element type (must be SleepQType) *)
- sleepQProc*: SleepQUPP; (* pointer to sleep universal proc ptr *)
- sleepQFlags*: INTEGER; (* flags *)
- END;
-
- HDQueuePtr* = POINTER TO HDQueueElement;
- HDSpindownUPP* = Types.UniversalProcPtr;
- HDQueueElement* = RECORD
- hdQLink*: HDQueuePtr (*ΔΔ POINTER TO HDQueueElement*); (* pointer to next queue element *)
- hdQType*: INTEGER; (* queue element type (must be HDPwrQType) *)
- hdFlags*: INTEGER; (* miscellaneous flags *)
- hdProc*: HDSpindownUPP; (* pointer to routine to call *)
- hdUser*: LONGINT; (* user-defined (variable storage, etc.) *)
- END;
- HDSpindownProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (VAR theElement: HDQueueElement);
-
- BatteryTimeRec* = RECORD
- expectedBatteryTime*: LONGINT; (* estimated battery time remaining (seconds) *)
- minimumBatteryTime*: LONGINT; (* minimum battery time remaining (seconds) *)
- maximumBatteryTime*: LONGINT; (* maximum battery time remaining (seconds) *)
- timeUntilCharged*: LONGINT; (* time until battery is fully charged (seconds)*)
- END;
-
- WakeupTime* = RECORD
- wakeTime*: LONGINT; (* wakeup time (same format as current time) *)
- wakeEnabled*: BOOLEAN; (* 1=enable wakeup timer, 0=disable wakeup timer *)
- END;
-
- StartupTime* = RECORD
- startTime*: LONGINT; (* startup time (same format as current time) *)
- startEnabled*: BOOLEAN; (* 1=enable startup timer, 0=disable startup timer *)
- END;
-
-
- PROCEDURE DisableWUTime*(): Types.OSErr;
- EXTERNAL PASCAL;
- PROCEDURE SetWUTime*(WUTime: LONGINT): Types.OSErr;
- EXTERNAL PASCAL;
- PROCEDURE GetWUTime*(VAR WUTime: LONGINT; VAR WUFlag: Types.SignedByte): Types.OSErr;
- EXTERNAL PASCAL;
- PROCEDURE BatteryStatus*(VAR Status: Types.SignedByte; VAR Power: Types.SignedByte): Types.OSErr;
- EXTERNAL PASCAL;
- PROCEDURE ModemStatus*(VAR Status: Types.SignedByte): Types.OSErr;
- EXTERNAL PASCAL;
- PROCEDURE IdleUpdate*(): LONGINT;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $A285, $2E80;
- (*$END*)
- PROCEDURE GetCPUSpeed*(): LONGINT;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $70FF, $A485, $2E80;
- (*$END*)
- PROCEDURE EnableIdle*;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7000, $A485;
- (*$END*)
- PROCEDURE DisableIdle*;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7001, $A485;
- (*$END*)
- PROCEDURE SleepQInstall*(qRecPtr: SleepQRecPtr);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $A28A;
- (*$END*)
- PROCEDURE SleepQRemove*(qRecPtr: SleepQRecPtr);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $A48A;
- (*$END*)
- PROCEDURE AOn*;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7004, $A685;
- (*$END*)
- PROCEDURE AOnIgnoreModem*;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7005, $A685;
- (*$END*)
- PROCEDURE BOn*;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7000, $A685;
- (*$END*)
- PROCEDURE AOff*;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7084, $A685;
- (*$END*)
- PROCEDURE BOff*;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7080, $A685;
- (*$END*)
- (* Public Power Management API (NEW!) *)
- PROCEDURE PMSelectorCount*(): INTEGER;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7000, $A09E, $3E80;
- (*$END*)
- PROCEDURE PMFeatures*(): LONGINT;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7001, $A09E, $2E80;
- (*$END*)
- PROCEDURE GetSleepTimeout*(): Types.UInt8;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7002, $A09E, $1E80;
- (*$END*)
- PROCEDURE SetSleepTimeout*(timeout: Types.ByteParameter);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $101F, $4840, $303C, $0003, $A09E;
- (*$END*)
- PROCEDURE GetHardDiskTimeout*(): Types.UInt8;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7004, $A09E, $1E80;
- (*$END*)
- PROCEDURE SetHardDiskTimeout*(timeout: Types.ByteParameter);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $101F, $4840, $303C, $0005, $A09E;
- (*$END*)
- PROCEDURE HardDiskPowered*(): BOOLEAN;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7006, $A09E, $1E80;
- (*$END*)
- PROCEDURE SpinDownHardDisk*;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7007, $A09E;
- (*$END*)
- PROCEDURE IsSpindownDisabled*(): BOOLEAN;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7008, $A09E, $1E80;
- (*$END*)
- PROCEDURE SetSpindownDisable*(setDisable: BOOLEAN);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $101F, $4840, $303C, $0009, $A09E;
- (*$END*)
- PROCEDURE HardDiskQInstall*(VAR theElement: HDQueueElement): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $700A, $A09E, $3E80;
- (*$END*)
- PROCEDURE HardDiskQRemove*(VAR theElement: HDQueueElement): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $700B, $A09E, $3E80;
- (*$END*)
- PROCEDURE GetScaledBatteryInfo*(whichBattery: INTEGER; VAR theInfo: BatteryInfo);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $301F, $4840, $303C, $000C, $A09E, $2080;
- (*$END*)
- PROCEDURE AutoSleepControl*(enableSleep: BOOLEAN);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $101F, $4840, $303C, $000D, $A09E;
- (*$END*)
- PROCEDURE GetIntModemInfo*(): LONGINT;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $700E, $A09E, $2E80;
- (*$END*)
- PROCEDURE SetIntModemState*(theState: INTEGER);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $301F, $4840, $303C, $000F, $A09E;
- (*$END*)
- PROCEDURE MaximumProcessorSpeed*(): INTEGER;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7010, $A09E, $3E80;
- (*$END*)
- PROCEDURE CurrentProcessorSpeed*(): INTEGER;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7011, $A09E, $3E80;
- (*$END*)
- PROCEDURE FullProcessorSpeed*(): BOOLEAN;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7012, $A09E, $1E80;
- (*$END*)
- PROCEDURE SetProcessorSpeed*(fullSpeed: BOOLEAN): BOOLEAN;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $101F, $4840, $303C, $0013, $A09E, $1E80;
- (*$END*)
- PROCEDURE GetSCSIDiskModeAddress*(): INTEGER;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7014, $A09E, $3E80;
- (*$END*)
- PROCEDURE SetSCSIDiskModeAddress*(scsiAddress: INTEGER);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $301F, $4840, $303C, $0015, $A09E;
- (*$END*)
- PROCEDURE GetWakeupTimer*(VAR theTime: WakeupTime);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7016, $A09E;
- (*$END*)
- PROCEDURE SetWakeupTimer*(VAR theTime: WakeupTime);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7017, $A09E;
- (*$END*)
- PROCEDURE IsProcessorCyclingEnabled*(): BOOLEAN;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7018, $A09E, $1E80;
- (*$END*)
- PROCEDURE EnableProcessorCycling*(enable: BOOLEAN);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $101F, $4840, $303C, $0019, $A09E;
- (*$END*)
- PROCEDURE BatteryCount*(): INTEGER;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $701A, $A09E, $3E80;
- (*$END*)
- PROCEDURE GetBatteryVoltage*(whichBattery: INTEGER): Types.Fixed;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $301F, $4840, $303C, $001B, $A09E, $2E80;
- (*$END*)
- PROCEDURE GetBatteryTimes*(whichBattery: INTEGER; VAR theTimes: BatteryTimeRec);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $301F, $4840, $303C, $001C, $A09E;
- (*$END*)
- PROCEDURE GetDimmingTimeout*(): Types.UInt8;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $701D, $A09E, $1E80;
- (*$END*)
- PROCEDURE SetDimmingTimeout*(timeout: Types.ByteParameter);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $101F, $4840, $303C, $001E, $A09E;
- (*$END*)
- PROCEDURE DimmingControl*(enableSleep: BOOLEAN);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $101F, $4840, $303C, $001F, $A09E;
- (*$END*)
- PROCEDURE IsDimmingControlDisabled*(): BOOLEAN;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7020, $A09E, $1E80;
- (*$END*)
- PROCEDURE IsAutoSlpControlDisabled*(): BOOLEAN;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7021, $A09E, $1E80;
- (*$END*)
- CONST
- uppSleepQProcInfo* = $00131832; (* Register PROCEDURE (4 bytes in D0, 4 bytes in A0): 4 bytes in D0; *)
- uppHDSpindownProcInfo* = $000000C0; (* PROCEDURE (4 byte param); *)
-
- PROCEDURE NewSleepQProc*(userRoutine: SleepQProcPtr): SleepQUPP;
- (*$IF NOT GENERATINGCFM *)
- INLINE PASCAL $2E9F;
- (*$END*)
-
- PROCEDURE NewHDSpindownProc*(userRoutine: HDSpindownProcPtr): HDSpindownUPP;
- (*$IF NOT GENERATINGCFM *)
- INLINE PASCAL $2E9F;
- (*$END*)
-
- PROCEDURE CallSleepQProc*(message: LONGINT; qRecPtr: SleepQRecPtr; userRoutine: SleepQUPP): LONGINT;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL ; (*••*)
- (*To be implemented*: Glue to move parameters into registers.*)
- (*$END*)
-
- PROCEDURE CallHDSpindownProc*(VAR theElement: HDQueueElement; userRoutine: HDSpindownUPP);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $4E90;
- (*$END*)
-
- (* $ALIGN RESET*)
- (* $POP*)
-
- END Power.
-
-